package com.fruit.pojo.promotion;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;

/**
 * 序列化到redis的信息，假设用户ID必须大于0，如果用户ID可以等于0或者可以小于0请修改{@link #exist(int) exist}方法
 * <p>
 * 初始化时只需要有用户ID和父级ID即可正确初始化
 *
 * @author joe
 * @version 2018.04.26 10:16
 */
@Data
public class UserInfo implements Serializable{

	private static final long serialVersionUID = 8382456478923031050L;
    private static final BigDecimal DEFAULT = new BigDecimal(0);

	/**
	 * 主键Id
	 */
	private int pId;
	/**
     * 用户ID
     */
    private int id;
    /**
     * 父级用户ID
     */
    private int parentId = 0;
    /**
     * 活动ID
     */
    private String activityId;
    /**
     * 活动参与时间，格式yyyy-MM-dd HH:mm:ss
     */
    private String time;
    /**
     * 金额
     */
    private BigDecimal salesVolume = DEFAULT;
    /**
     * 所有下级ID
     */
    private Set<Integer> allChilds = new HashSet<>();
        /*----------------------------------数据库中应该没有下列字段---------------------------------------------*/
    /**
     * 子节点已经满的子节点
     */
    private Set<Integer> fullChilds = new HashSet<>();
    /**
     * 子节点未满的子节点
     */
    private Set<Integer> notFullChilds = new HashSet<>();

    /**
     * 验证用户ID是否合法（假设用户ID都大于0，小于等于0表示不是用户ID）
     *
     * @param id 用户ID
     * @return 返回true表示该值是一个合法的用户ID
     */
    public static boolean exist(int id) {
        return id > 0;
    }
}
